home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / qbprog.EXE / MODEMILK.BAS < prev    next >
BASIC Source File  |  1995-10-18  |  4KB  |  182 lines

  1. 'QBASIC'de çalìƒìr
  2. '     bu dilde bellek sorunu nedeniyle yavaƒ bir hìz seçiniz.          
  3.  
  4. 'QuickBasic de çalìƒmasì için ise  versiyon 7.1 QBX /L QBX /C:32000
  5. '                                  versiyon 4.5 QB /L QB /C:32000
  6. '                                       ƒeklinde yüklenmelidir.
  7.  
  8. 'Her türlü modemde çalìƒan iletiƒim programì Çekirdek mödülü
  9.  
  10.  
  11.  
  12. 'Deºiƒkenler (**** sadece burayì deºiƒtiriniz ****)
  13. 'Kendi modeminize ait deºerleri deºiƒkenlere atayìnìz
  14. Irq = 5
  15. Port = &H3E8
  16. Baud = 14400
  17. Ansi = 1        'Ansi.sys yüklü deºilse Ansi=0 olmalì (ekran için)
  18.  
  19. 'Program Baƒlangìcì
  20. COLOR 7, 1
  21. CLS
  22. GOSUB DegerleriSakla
  23. GOSUB EkranAc
  24. GOSUB ModemiAc
  25. GOSUB IRQ3PasifOlsun
  26. GOSUB BaudAyarla
  27. GOSUB IrqAdresiniAyarla
  28. GOSUB IrqAktifOlsun
  29.  
  30. GOSUB Basla
  31.  
  32. GOSUB ModemiKapa
  33. GOSUB DegerleriYerineKoy
  34. END
  35.  
  36. DegerleriSakla:
  37.   DIM Sakla(27)
  38.   DEF SEG = 0
  39.   
  40.   FOR I = 40 TO 63:             'ÿnterrupt adresleri
  41.     Sakla(I - 40) = PEEK(I)
  42.   NEXT
  43.  
  44.   Sakla(24) = INP(&H21)          'PIC deºerleri
  45.   Sakla(25) = INP(&HA1)
  46.  
  47.   Sakla(26) = PEEK(1026)         'Com2 adresi
  48.   Sakla(27) = PEEK(1027)
  49.  
  50.   POKE 1027, FIX(Port / 256)
  51.   POKE 1026, Port - PEEK(1027) * 256
  52. RETURN
  53.  
  54. DegerleriYerineKoy:
  55.   DEF SEG = 0
  56.  
  57.   FOR I = 40 TO 63:             'ÿnterrupt adresleri
  58.     POKE I, Sakla(I - 40)
  59.   NEXT
  60.  
  61.   OUT &H21, Sakla(24)           'PIC deºerleri
  62.   OUT &HA1, Sakla(25)
  63.  
  64.   POKE 1026, Sakla(26)          'Com2 adresi
  65.   POKE 1027, Sakla(27)
  66.  
  67. RETURN
  68.  
  69. EkranAc:
  70. IF Ansi = 1 THEN OPEN "CON" FOR OUTPUT AS #2 ELSE OPEN "SCRN:" FOR OUTPUT AS #2
  71.  
  72. RETURN
  73.  
  74. ModemiAc:
  75. OPEN "Com2:2400,N,8,1" FOR RANDOM AS #1
  76.  
  77. RETURN
  78.  
  79. BaudAyarla:
  80.   Sakla = INP(Port + 3)
  81.   OUT Port + 3, 128
  82.   OUT Port, 115200 / Baud
  83.   OUT Port + 3, Sakla
  84.  
  85. RETURN
  86.  
  87. IrqAdresiniAyarla:
  88. IntAdres = (Irq + 8) * 4
  89. POKE IntAdres, PEEK(44)
  90. POKE IntAdres + 1, PEEK(45)
  91. POKE IntAdres + 2, PEEK(46)
  92. POKE IntAdres + 3, PEEK(47)
  93.  
  94. RETURN
  95.  
  96. IrqAktifOlsun:
  97.    RESTORE IRQSerbest
  98.    REDIM Oku(44)
  99.    DEF SEG = VARSEG(Oku(0))
  100.  
  101.     FOR PicMask = 0 TO 44
  102.        READ D%
  103.        IF PicMask = 13 THEN D% = Irq
  104.        POKE VARPTR(Oku(0)) + PicMask, D%
  105.     NEXT PicMask
  106.  
  107.    CALL ABSOLUTE(VARPTR(Oku(0)))
  108.  
  109. RETURN
  110.  
  111. IRQ3PasifOlsun:
  112.   OUT &H21, Sakla(24)           'PIC deºerleri
  113.   OUT &HA1, Sakla(25)
  114.  
  115. RETURN
  116.  
  117.  
  118. ModemiKapa:
  119.   PRINT #1, "ATH"
  120.   OUT Port + 4, (INP(Port + 4) AND 252)
  121.   CLOSE #1
  122.  
  123. RETURN
  124.  
  125. Basla:
  126. LOCATE 1, 1, 1: PRINT "Modem ÿnstall ediliyor"
  127. PRINT #1, "ATZ"
  128. RR = FIX(TIMER)
  129. DO
  130.   IF LOC(1) > 0 THEN B$ = B$ + INPUT$(LOC(1), #1)
  131.   IF INSTR(B$, "OK") > 0 THEN EXIT DO
  132.   IF FIX(TIMER) - RR > 5 THEN
  133.      PRINT "Modem Port Adresi ve IRQ deºerleri hatalì !!"
  134.      RETURN
  135.   END IF
  136. LOOP
  137.  
  138. LOCATE 1, 1, 1: PRINT "Modem uygun bulundu, baƒladì (Çìk샠için Esc)"
  139. DO
  140.    A$ = INKEY$
  141.       IF A$ <> "" THEN
  142.           IF ASC(A$) = 27 THEN EXIT DO
  143.           PRINT #1, A$; :      'Modem girdisi
  144.       ELSE
  145.           IF LOC(1) > 0 THEN
  146.              B$ = INPUT$(LOC(1), #1)
  147.              PRINT #2, B$; :   'Modem çìktìsì
  148.           END IF
  149.       END IF
  150. LOOP
  151.  
  152. RETURN
  153.  
  154. IRQSerbest:
  155. DATA &H50                  : 'PUSH AX
  156. DATA &H53                  : 'PUSH BX
  157. DATA &H51                  : 'PUSH CX
  158. DATA &H1E                  : 'PUSH DS
  159. DATA &HFA                  : 'CLI
  160. DATA &HB8, 0, &HB9         : 'MOV AX,B900
  161. DATA &H8E, &HD8            : 'MOV DS,AX
  162. DATA &H31, &HC9            : 'XOR CX,CX
  163. DATA &HB1, 2               : 'MOV CL,02
  164. DATA &HBB, 1, 0            : 'MOV BX,0001
  165. DATA &HD3, &HE3            : 'SHL BX,CL
  166. DATA &HF7, &HD3            : 'NOT BX
  167. DATA &HE4, &HA1            : 'IN AL,A1
  168. DATA &HA2, 0, 0            : 'MOV [0000],AL
  169. DATA &H20, &HF8            : 'AND AL,BH
  170. DATA &HE6, &HA1            : 'OUT A1,AL
  171. DATA &HE4, &H21            : 'IN AL,21
  172. DATA &HA2, 1, 0            : 'MOV [0001],AL
  173. DATA &H20, &HD8            : 'AND AL,BL
  174. DATA &HE6, &H21            : 'OUT 21,AL
  175. DATA &HFB                  : 'STI
  176. DATA &H1F                  : 'POP DS
  177. DATA &H59                  : 'POP CX
  178. DATA &H5B                  : 'POP BX
  179. DATA &H58                  : 'POP AX
  180. DATA &HCB                  : 'RETF
  181.  
  182.